プロブレムフレーム ソフトウェア開発問題の分析と構造化
https://images-na.ssl-images-amazon.com/images/I/51GZCYQEDFL.jpg
目次
第1章 問題に集中する
1.1 解決策に優先する問題
1.2 コンピュータと世界
1.3 問題の初期の焦点
1.4 問題はインタフェースにあるのではない
1.5 世界を記述するという難題
1.5.1 コンピュータの魅力
1.5.2 「システム」が持つ2つの意味
1.5.3 「モデル」が持つ2つの意味
1.6 シームレスな開発
1.7 解決策
1.8 本書で扱う範囲
第2章 問題を見つけて範囲を決める
2.1 コンテクスト図
2.1.1 物理的ドメイン
2.1.2 共有現象のインタフェース
2.2 コンテクスト図が問題の範囲を定める
2.2.1 データベースドメイン
2.2.2 医療スタッフと周期&範囲のドメイン
2.2.3 ICU患者とドメイン
2.3 本当の問題
2.3.1 顧客
2.3.2 世界のどこまで?
2.4 ドメインインタフェース
2.4.1 共有現象は抽象である
2.4.2 接続ドメイン
2.4.3 接続ドメインの無視
2.4.4 接続ドメインが無視できない場合
2.5 より大きなコンテクストへの対応
2.6 マシンドメイン
2.6.1 マシンの中には、何があるか?
2.6.2 マシンが問題ドメインの場合
第3章 問題と副問題
3.1 問題図
3.1.1 単純な問題図
3.1.2 別の単純な問題
3.1.3 単純な問題
3.1.4 問題分析と問題図
3.2 現実的な問題
3.2.1 分解
3.2.2 問題の構造化
3.3 副問題の例
3.3.1 暖房表示
3.3.2 周期&範囲の入力
3.3.3 会員資格の報告
3.3.4 炉の操作
第4章 基本問題クラスとプロブレムフレーム
4.1 問題クラス
4.1.1 プロブレムフレーム
4.1.2 5つの基本フレーム
4.1.3 プロブレムフレーム間の違い
4.2 現象とドメインについて
4.2.1 固体
4.2.2 関係
4.2.3 原因となる現象と象徴となる現象
4.2.4 ドメインタイプ
4.3 プロブレムフレーム
4.3.1 必要とされる振る舞い
4.3.2 命令された振る舞いのフレーム
4.3.3 情報表示のフレーム
4.3.4 単純な仕掛り品のフレーム
4.3.5 変換フレーム
4.3.6 変換の制限
第5章 フレーム考慮事項と開発記述
5.1 フレーム考慮事項
5.2 必要とされる振る舞いのフレーム考慮事項
5.2.1 フレーム考慮事項
5.2.2 3つの記述
5.2.3 記述が1つでは足りない理由
5.3 命令された振る舞いのフレーム考慮事項
5.3.1 不服従
5.3.2 フレーム考慮事項
5.3.3 賢明なコマンドの要求
5.3.4 実行可能なコマンドの要求
5.3.5 門扉&モータドメインのプロパティ
5.3.6 マシン仕様書
5.4 情報表示のフレーム考慮事項
5.4.1 フレーム考慮事項
5.4.2 車&センサドメインのプロパティ
5.5 単純な仕掛り品のフレーム考慮事項
5.5.1 単純な仕掛り品のフレーム考慮事項
5.5.2 パーティ計画ドメインの記述
5.5.3 ユーザコマンド
5.5.4 要求
5.5.5 パーティ計画編集仕様書
5.6 変換のフレーム考慮事項
5.6.1 入力ドメインプロパティ
5.6.2 出力ドメインプロパティ
5.6.3 要求
5.6.4 巡回
5.6.5 フレーム考慮事項
5.6.6 変換マシンの効率性
5.7 2つの解説
5.7.1 プロブレムフレームと開発方法
5.7.2 フレーム不適合
第6章 フレームのフレーバと開発記述
6.1 フレームとフレーバ
6.1.1 ドメイン記述のスコープ
6.1.2 ドメインのフレーバ
6.2 静的なフレーバ
6.2.1 物理的な静的ドメイン
6.2.2 構造的なフレーバ
6.3 動的なフレーバ
6.3.1 動的ドメインにおける許容度
6.3.2 制止
6.3.3 離散的現象と連続的現象
6.4 制御のフレーバ
6.4.1 振る舞いの状態
6.4.2 振る舞いドメインの特徴
6.5 非形式的フレーバ
6.5.1 形式的手続きの想定
6.5.2 指示
6.5.3 さらに便利な用語の定義
6.6 概念的なフレーバ
6.6.1 エンティティとしての概念
6.6.2 エンティティと要求プロセス
6.6.3 プロセスのタグ付け
第7章 モデルドメインと現実世界
7.1 情報問題
7.2 最初の例
7.2.1 問題
7.2.2 変数からモデルへ
7.2.3 モデルであること
7.2.4 さらに多くの変数
7.3 モデルドメインの導入
7.3.1 モデルと現実世界
7.3.2 現実世界のドメインプロパティ
7.3.3 モデルのデザイン
7.3.4 モデルの維持管理と利用
7.4 別のモデル例
7.4.1 問題
7.4.2 モデルのないバージョン
7.4.3 より難しいバージョン
7.4.4 単純な回路モデル
7.4.5 より実用的なモデル
7.5 モデルにおける制御と定義
7.5.1 C3がC1を引き起こす
7.5.2 C1の観点から定義されたC3
7.5.3 C1がC3を引き起こす
7.6 モデルに関する考慮事項
第8章 変種フレーム
8.1 フレームと変種
8.2 記述変種
8.2.1 問題図
8.2.2 記述ドメイン
8.2.3 変換問題の記述変種
8.2.4 情報問題の記述変種
8.3 オペレータ変種
8.3.1 情報問題のオペレータ変種
8.3.2 命令された情報問題の要求
8.3.3 基本フレームと変種フレームを組み合わせる
8.3.4 デフォルトの振る舞いを修正する
8.3.5 デフォルトの振る舞いをオーバーライドする
8.4 接続変種
8.4.1 必要とされる振る舞いフレームと接続ドメイン
8.4.2 原因となる遠隔ドメイン
8.4.3 ドメインプロパティ記述
8.4.4 変種を組み合わせる
8.4.5 従順な遠隔ドメインと接続ドメイン
8.4.6 接続ドメインとしての文書
8.5 制御変種
8.5.1 変換問題
8.5.2 その他の制御変種
第9章 特定の考慮事項
9.1 フレーム考慮事項とその他の考慮事項
9.2 超過考慮事項
9.2.1 マシンが速すぎる場合
9.2.2 超過に対する戦略
9.3 初期化考慮事項
9.3.1 マシンの初期化と世界の初期化
9.3.2 初期化と記述範囲
9.3.3 操作命令とドメイン記述
9.3.4 マシンによる初期化
9.3.5 情報問題での初期化
9.4 信頼性考慮事項
9.4.1 信頼性考慮事項の評価
9.4.2 信頼性考慮事項の分離
9.4.3 分解による信頼性への取り組み
9.4.4 メールファイル:信頼性の分解
9.4.5 情報問題における信頼性
9.4.6 診断の難しさ
9.5 同一性考慮事項
9.5.1 同一性考慮事項のインタフェース
9.5.2 同一性モデル
9.5.3 モデルの作成と維持管理
9.6 完全性考慮事項
9.6.1 形式的な完全性
9.6.2 記述範囲
9.6.3 2つの経験側
9.6.4 デッドロックの回避
9.6.5 一般的考察
第10章 分解、再び
10.1 概論
10.2 小包仕分け機問題-1
10.2.1 単純な分解
10.2.2 フレーム考慮事項
10.3 小包仕分け機問題-2
10.3.1 静的モデルでの予備計算
10.3.2 同一性考慮事項
10.3.3 若干の可能な自動化
10.3.4 信頼性
10.3.5 初期化
10.3.6 完全性
10.4 分解経験則
10.4.1 単純な経験則
10.4.2 異なるテンポ
10.4.3 2つより多い叙法
10.4.4 複雑なドメインまたは要求
10.4.5 ユーザまたはオペレータのモデリング
第11章 合成フレーム
11.1 概論
11.1.1 MVC:大型合成フレーム
11.2 合成問題
11.2.1 共通ドメイン
11.2.2 非相互作用合成
11.2.3 表示ドメインの共有
11.2.4 命令された振る舞いと必要とされる振る舞い
11.2.5 語彙的ドメインの作成と使用
11.3 合成考慮事項
11.3.1 通約可能な記述
11.3.2 一貫性
11.3.3 優先度
11.3.4 干渉
11.3.5 同期
第12章 成長したソフトウェア開発
12.1 ソフトウェア開発の未熟さ
12.1.2 ソフトウェアの品質
12.1.2 万能薬症候群
12.1.3 成熟と熟練
12.2 開発失敗のリスク
12.3 浅い要求
12.4 非機能要求
12.5 アマチュア仕事
12.6 複雑さにおぼれる
12.7 注意の集中
12.7.1 直接的記述
12.8 全体として見たプロブレムフレーム
12.8.1 万能薬ではない
12.8.2 さらなるフレームの発見
12.8.3 経験から学ぶ
付録1 表記法
1 コンテクスト図
2 問題図
3 プロブレムフレーム図
4 状態機械図
5 樹形図
6 論理記号
付録2 用語解説